During the last 5-10 years, “Search” has become a phenomenon in the digital world among people all around the globe. In a typical search situation, a short search query is used to find a large, or at least a larger, document. Typical examples are Internet search engines or search engines installed on library computers for searching articles or books stored in the library.
A traditional search scenario, as described above, is different from a typical match scenario. In a match scenario, two or more users input data into a system for the purpose of finding out whether the data matches the data input by the other user(s). That is, as opposed to a search scenario, all users inputting information into the system are interested in finding matching information. In a search scenario, only the user entering the search query, typically in form of one or several key words, is interested in the match result. From a technical point of view, a matching system differs from a search engine at least in that a matching system has to index the incoming “queries” since the queries are also potential matches for previously or subsequently received queries. In order to distinguish a “match query” from a conventional search query, the data transmitted to a matching system in a “match query” will throughout this document be referred to as an “entity”.
A matching system can be used in many different types of matching services. Examples of such services are online job finding/recruitment services, E-commerce services and dating services.
In existing matching systems, a match operation can be said to be divided into at least two sub-operations; an insertion operation and a search operation. First, when a new user sends an entity to the system, the insertion operation in which the entity is inserted to the data structure of the system is performed. This operation involves the step of making the entity searchable to other users by indexing the entity into an index in which it is associated with index points to facilitate fast and accurate retrieval of entities. Then, at a later stage, the search operation in which the system searches for matching entities is performed. The search operation is initiated by some event occurring within the system. Such an event may hence be considered a “match triggering event”. In existing matching systems, a match triggering event may be, e.g., the occurrence of a user pressing a “search-for-matching-jobs-button” displayed to the user in his/her web browser when visiting a job-finding web site, or the expiration of a timer running in a server hosting the job-finding application. In order to see if new matches have been added to the system after the last occurrence of a match triggering event, the user has to wait for the next one to occur, i.e., in this exemplary case, to wait for the timer to expire or press the search button again. How and when a matching system performs searches for potential matches is crucial to the perceived quality of a match service. Also, in between the occurrences of match triggering events there is a risk that the matching system is in an “unmatched state”, meaning that the system may be unaware of that different entities stored in the system match each other. Of course, this is an undesired state of a matching system since users cannot be notified about matching entities as long as the system is unaware of their existence. This fact often reduces the user-perceived quality of the service for which the matching system is used.
How and when a matching system performs searches for potential matches is also crucial to the computational power required by the matching system. In existing systems, the index has to be traversed at least twice during a matching operation; once during the insertion operation when indexing the entity and once during the search operation when traversing the index in pursuit of matching entities. Since the index of a typical matching system comprises a vast amount of data this process is often slow and computational power consuming.
Thus, one problem associated with matching systems according to prior art is how to increase the user-perceived quality of the matching service for which the system is used. Another problem is how to reduce the computational capacity needed in the matching systems. Yet another problem is how to reduce the time needed to find all potential matches in the system.